| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { NextResponse } from "next/server";
- import { verifyToken } from "@/lib/auth";
- import smbClient from "@/lib/smbClient";
- export async function GET(request, { params }) {
- const headers = new Headers();
- headers.set("Cache-Control", "no-store");
- const decoded = verifyToken(request);
- if (decoded.error) {
- return NextResponse.json(
- { error: decoded.error },
- { status: 401, headers }
- );
- }
- if (decoded.role !== "admin") {
- console.log(`Unauthorized access attempt by non-admin user: ${decoded.username}`);
- return NextResponse.json(
- { error: "Unauthorized access. Admin only." },
- { status: 403, headers }
- );
- }
- const { path: pathArray = [] } = params;
- const smbPath = pathArray.join("\\");
- console.log("Versuche, auf folgenden Admin-Pfad zuzugreifen:", smbPath);
- return new Promise((resolve) => {
- smbClient.readdir(smbPath, (err, files) => {
- if (err) {
- console.error("Fehler beim Zugriff auf den Admin-Ordner:", err);
- resolve(
- NextResponse.json(
- {
- error: "Fehler beim Zugriff auf den Ordner",
- details: err.message,
- },
- { status: 500, headers }
- )
- );
- } else if (!files || files.length === 0) {
- console.log(`Keine Dateien im Pfad ${smbPath} gefunden.`);
- resolve(
- NextResponse.json(
- { message: "Keine Dateien im angegebenen Ordner gefunden." },
- { status: 200, headers }
- )
- );
- } else {
- const sortedFiles = [...files].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
- resolve(NextResponse.json({ files: sortedFiles }, { status: 200, headers }));
- }
- });
- });
- }
|